package com.fdb.efp.limit.service.dao;

import java.util.List;
import java.util.Map;

import org.apache.ibatis.annotations.Param;

import com.fdb.efp.limit.service.domain.LmtPrelist;
import com.fdb.efp.limit.service.domain.LmtPrelistBatchApp;
import com.fdb.efp.limit.service.domain.PrePrdCont;
import com.fdb.efp.limit.service.vo.LmtPrelistVO;
/**
 * <p>DAO interface:预授信名单表				<p>
 * @author chenqm1
 * @date 2018-05-03
 */
public interface LmtPrelistDao {
	
	public int insertLmtPrelist(LmtPrelist lmtPrelist);
	
	public int deleteByPk(LmtPrelist lmtPrelist);
	
	public int updateByPk(LmtPrelist lmtPrelist);
	
	public LmtPrelist queryByPk(LmtPrelist lmtPrelist);
	
	public List<PrePrdCont> queryAllOwnerByPage(LmtPrelistVO lmtPrelistVO);
	
	public List<PrePrdCont> queryAllCurrOrgByPage(LmtPrelistVO lmtPrelistVO);
	
	public List<PrePrdCont> queryAllCurrDownOrgByPage(LmtPrelistVO lmtPrelistVO);
	
	public List<LmtPrelist> queryAppPrelistByCert(LmtPrelist lmtPrelist);
	
	public int updateLmtPrelistStatus(LmtPrelist lmtPrelist);
	
	/**
	 * 根据条件查询白名单列表
	 * @param lmtPrelistVO
	 * @return
	 */
	public List<LmtPrelist> queryPreListByCondition(LmtPrelistVO lmtPrelistVO);
	
	public List<LmtPrelist> queryOrgShortName(LmtPrelist lmtPrelist);
	
	/**
	 * 批量插入白名单
	 * @param lmtPrelists
	 * @return
	 */
	public int insertLmtPrelistAll(@Param("lmtPrelists")List<LmtPrelist> lmtPrelists);
	
	/**
	 * 
	 * @Description 根据流水号来查询临时表数据并且插入到正式表中
	 * @param lmtPrelist
	 * @return
	 */
	public int insertTmpToLmtPrelist(LmtPrelist lmtPrelist);
	
	/**
	 * 
	 * @Description 抽取数据给ODS,已生效未使用报名单数据
	 * @param lmtPrelist
	 * @return
	 */
	public List<LmtPrelist> queryListToODSWD(LmtPrelistBatchApp lmtPrelistBatchApp);
	
	/**
	 * 
	 * @Description 抽取数据给ODS,营销短信数据
	 * @param lmtPrelist
	 * @return
	 */
	public List<LmtPrelist> queryListToODSMessage(LmtPrelistBatchApp lmtPrelistBatchApp);
	
	/**
	 * 
	 * @Description 获取不能通过的白名单数据
	 * @param lmtPrelists
	 * @return
	 */
	public List<Map<String, Object>> queryNoPassKList(@Param("lmtPrelists")List<LmtPrelist> lmtPrelists);
	
	/**
	 * 查询预授信名单激活天数列表
	 * @return
	 */
	public List<Integer> queryLmtPrelistValidDays();
	
	/**
	 * 预授信名单超期未激活，修改状态为失效
	 * @param lmtPrelist
	 * @return
	 */
	public int updatePreListStatusInvalid(LmtPrelist lmtPrelist);
	
	/**
     * 批复过期未激活，修改状态为失效
     * @param lmtPrelist
     * @return
     */
    public int updatePreListStatusInvalid4Apply(LmtPrelist lmtPrelist);
    
    /**
     * 查询授信协议终止的白名单
     * @return
     */
    public List<LmtPrelist> queryPreList4Terminate();
    
    /**
	 * 根据条件查询白名单列表,分页
	 * @param lmtPrelistVO
	 * @return
	 */
	public List<LmtPrelist> queryPreListOfConditionByPage(LmtPrelistVO lmtPrelistVO);
	
	/**
     * 白名单申请客户移交操作
     * @param fromUser 移出客户经理
     * @param toUser 接收客户经理
     * @param fromBrId 移出机构
     * @param toBrId 接收机构
     * @param cusIds 客户号列表
     * @return
     */
    public int lmtWhiteBillCusHandOver(@Param("fromUser") String fromUser, @Param("toUser") String toUser, @Param("fromBrId") String fromBrId, @Param("toBrId") String toBrId, @Param("cusIds") List<String> cusIds);
    
    /**
     * 根据授信申请流水号查询预授信名单
     * @param lmtSerno
     * @return
     */
    public LmtPrelist queryLmtPrelistByLmtSerno(@Param("lmtSerno") String lmtSerno);
    
    /**
     * 查询超过激活有效期未激活的记录
     * @param actValidDays
     * @param createDate
     * @return
     */
    public List<LmtPrelist> queryLmtPrelist4Invalid(@Param("actValidDays") int actValidDays, @Param("createDate") String createDate);
    
    /**
     * 根据主键列表更新状态
     * @param status
     * @param pks
     * @return
     */
    public int updateStatusByPks(@Param("status") String status, @Param("pks") List<String> pks);
    
    /**
     * 根据授信申请流水号更新
     * @param lmtPrelist
     * @return
     */
    public int updateByLmtSerno(LmtPrelist lmtPrelist);
    
    /**
     * 获取申请被拒记录
     * @param actValidDays
     * @param createDate
     * @return
     */
    public List<LmtPrelist> queryLmtIndivAppRejectRecords(@Param("actValidDays") int actValidDays, @Param("createDate") String createDate);
 
}